﻿using System;
using System.Collections.Generic;
using System.Text;
using Iesi.Collections;

namespace Protocolo
{
    /// <summary>
    /// Clase que identifica a los usuarios
    /// </summary>
    public abstract class Persona
    {

        #region atributos
        private int _id_persona;
        private String _Nombre;
        private String _Nombre2;
        private String _Apellido;
        private String _Apellido2;
        private int _CI;
        private String _Correo;
        private String _Login;
        private String _Password;
        private Int32 _tipo_usuario;
        private ISet _registros;
        #endregion

        #region getters y setters
        /// <summary>
        /// Identificador de la persona que es generado automaticamente.
        /// </summary>
        public int id_persona
        {
            get { return _id_persona; }
            set { _id_persona = value; }
        }

        /// <summary>
        /// Primer nombre de la persona.
        /// </summary>
        public String Nombre
        {
            get { return _Nombre; }
            set { _Nombre = value; }
        }

        /// <summary>
        /// Segundo nombre de la persona.
        /// </summary>
        public string Nombre2
        {
            get { return _Nombre2; }
            set { _Nombre2 = value; }
        }
        /// <summary>
        /// Primer apellido de la persona.
        /// </summary>
        public string Apellido
        {
            get { return _Apellido; }
            set { _Apellido = value; }
        }
        /// <summary>
        /// Segundo apellido
        /// </summary>
        public string Apellido2
        {
            get { return _Apellido2; }
            set { _Apellido2 = value; }
        }
        /// <summary>
        /// Cedula de la persona.
        /// </summary>
        public int CI
        {
            get { return _CI; }
            set { _CI = value; }
        }
        /// <summary>
        /// Correo de la persona.
        /// </summary>
        public string Correo
        {
            get { return _Correo; }
            set { _Correo = value; }
        }
        /// <summary>
        /// Nombre de usuario de la persona.
        /// </summary>
        public string Login
        {
            get { return _Login; }
            set { _Login = value; }
        }
        /// <summary>
        /// Contraseña de la persona.
        /// </summary>
        public string Password
        {
            get { return _Password; }
            set { _Password = value; }
        }
        /// <summary>
        /// Define el tipo de usuario que es la persona.
        /// Puede ser Estudiante, Guia, Coordinador u Organizador
        /// </summary>
        public int tipo_usuario
        {
            get { return _tipo_usuario; }
            set { _tipo_usuario = value; }
        }

        public ISet registros
        {
            get { return _registros; }
            set { _registros = value; }
        }

        #endregion

        #region singleton
        public static Persona estancia(string pat)
        {
           if (pat.Equals("Guia"))
               return (new Guia());
           else if (pat.Equals("Organizador"))
               return (new Organizador());
           else
               return (new Coordinador());
        }
        #endregion
   }
}

